﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
using Domain.Entidades;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            ////Singleton s0 = new Singleton();  //Error
            //Domain.Conexion C1 = Domain.Conexion.Instance ;
            //Domain.Conexion C2 = Domain.Conexion.Instance;
            //if (C1 == C2)
            //{
            //    Console.WriteLine("Son igualitos mira.");
            //    Console.ReadLine();
            //}

            Configuration configuration = new Configuration();

            configuration.Configure();

            (new SchemaExport(configuration)).Create(true, true);

            var factory = configuration.BuildSessionFactory();

            Articulo articulo1 = new Articulo()
            {
                Name = "Articulo 1",
                Marca = "Marca 1"
            };
            articulo1.Grabar(articulo1);

            Entidad entidad1 = new Entidad() { Nombre = "Entidad 1" };
            entidad1.Grabar(entidad1);

            Estado estado1 = new Estado()
            {
                Nombre = "Inicial",
                Entidad = entidad1,
                Inicial = true,
                Final = false,
                Orden = 1
            };
            estado1.Grabar(estado1);

            People peo1 = new People()
            {
                Name = "People 1",
                Address = "Calle 1",
                State = estado1
            };
            peo1.Grabar(peo1);

            People peo2 = new People()
            {
                Name = "People 2",
                Address = "Calle 2",
            };
            peo2.Grabar(peo2);
            
            People peo3 = new People()
            {
                Name = "People 3",
                Address = "Calle 3",
            };
            peo3.Grabar(peo3);

            People peo4 = new People()
            {
                Name = "People 4",
                Address = "Calle 4",
                State = estado1
            };
            peo4.Grabar(peo4);

            People peo5 = new People()
            {
                Name = "People 5",
                Address = "Calle 5",
                State = estado1
            };
            peo5.Grabar(peo5);
            
            People peo6 = new People()
            {
                Name = "People 6",
                Address = "Calle 6",
            };
            peo6.Grabar(peo6);

            Estado estado2 = new Estado()
            {
                Nombre = "Auditoria",
                Entidad = entidad1,
                Inicial = false,
                Final = false,
                Orden = 2
            };
            estado2.Grabar(estado2);

            People peo7 = new People()
            {
                Name = "People 7",
                Address = "Calle 7",
                State = estado2
            };
            peo1.Grabar(peo7);

            Estado estado3 = new Estado()
            {
                Nombre = "Final",
                Entidad = entidad1,
                Inicial = false,
                Final = true,
                Orden = 3
            };

            estado3.Grabar(estado3);

            bool exito = false;
            Estado estado = new Estado();
            Entidad entidad = new Entidad();
            entidad.BuscarUno(ref entidad, 1);
            IList<Estado> lista = new List<Estado>();
            lista = estado.EstadosDeUnaEntidad(entidad);
            foreach (Estado item in lista)
                {
                    Console.WriteLine(item.Id);
                    Console.WriteLine(item.Nombre);
                    People people = new People();
                    IList<People> listaPeople = new List<People>();
                    listaPeople = people.PersonasEnUnEstado(item);
                    foreach (People pers in listaPeople)
                    {
                        Console.WriteLine(pers.Id);
                        Console.WriteLine(pers.Name);
                    }
                    Console.ReadLine();
                }
            Console.ReadLine();
        }
   }
}

